package com.manli.timing.utils;

import com.hankcs.hanlp.HanLP;
import lombok.extern.slf4j.Slf4j;

import java.util.ArrayList;
import java.util.List;

@Slf4j
public class WordUtil {
    public static void main(String[] args) {
        String text = "简直完美，这款相当大气，外形看起来舒服，双面玻璃，不锈钢机身，四周钢琴烤漆，握起来很有手感，也很大气，手感不错，有份量，音效也还不错，摄像头实拍真实，拍出来的视频也还可以，下了几个app运行的还比较顺畅，暂无卡顿，待机时间比以前几款好多了，整体来说是个不错的选择！手感特别好，颜色很喜欢，大小很合适，特别好看，屏幕音效也特别好，特别特别喜欢，拍照效果也特别好，很清楚，运行速度那就没得说，特别快，面容特别快，待机也很好。这款机子颜色特别多，本人喜欢，特意选了很好看，领了1000元的优惠券价格很合适，推荐大家购买，简直没得说大小正好，颜色很喜欢，照相很清楚 像素很好，很清晰，运行速度很快，很流畅。比现在用的流畅待机时间长。很喜欢也很推荐购买！用了快一个月才来评价的 真的很不错 不管是手感还是外观都很喜欢 颜色也多 选了喜欢的 本来是想着5G手机出来直接换的 不挣气的手机突然崩了 直接换了11 那屏显音效真的没话说 速度快 特别是音效 听着都有环绕声";

//        System.out.println("首次编译运行时，HanLP会自动构建词典缓存，请稍候……\n");
//        //第一次运行会有文件找不到的错误但不影响运行，缓存完成后就不会再有了
//        System.out.println("标准分词：");
//        System.out.println(HanLP.segment("你好，欢迎使用HanLP！"));
//        System.out.println("\n");

//        System.out.println("自动摘要：");
//        getZhaiYao(text);
//        System.out.println("\n");
//
//        System.out.println("短语提取1：");
//        getDuanYu("比现在用的流畅待机时间长");
//        System.out.println("\n");

//        System.out.println("短语提取：");
//        getDuanYu(text);
//        System.out.println("\n");

        getGoodsLabels(text);

    }

    /**
     * 关键字提取
     */
    public static void getMainIdea(String text) {
        List<String> keywordList = HanLP.extractKeyword(text, 5);
        System.out.println(keywordList);
    }

    /**
     * 自动摘要
     */
    public static void getZhaiYao(String text) {
        List<String> sentenceList = HanLP.extractSummary(text, 3);
        System.out.println(sentenceList);
        log.info("HanLp自动摘要：" +sentenceList);
    }

    /**
     * 短语提取
     */
    public static void getDuanYu(String text) {
        List<String> phraseList = HanLP.extractPhrase(text, 3);
        System.out.println(phraseList);
        log.info("HanLp短语提取：" +phraseList);
    }

    /**
     * 商品评价标签提取
     */
    public static List<String> getGoodsLabels(String text) {
        //先进行自动摘要，如果字符串大于6个字的，在进行短语提取，然后合并6个字以下的，记得删除6个字以上的先，再随机3个出来
        List<String> sentenceList = HanLP.extractSummary(text, 3);
        if(sentenceList.size() == 3){
            log.info("HanLp自动摘要：" +sentenceList);
            List<String> duanyus = new ArrayList<>();
            sentenceList.forEach(s -> {
                if(s.length() > 6){
                    List<String> phraseList = HanLP.extractPhrase(s, 3);
                    duanyus.addAll(phraseList);
                }
            });
            sentenceList.removeIf(s -> s.length() > 6);
            sentenceList.addAll(duanyus);
        }
        log.info("HanLp商品评价标签提取完毕：" +(sentenceList.size() > 3?sentenceList.subList(0,3):sentenceList));
        return sentenceList.size() > 3?sentenceList.subList(0,3):sentenceList;
    }

}
